﻿
(function ($) {

    //
    // Справочник цветов
    //
    function GetColorDictionary(vdiv) {
        var pager = $('#' + vdiv + 'Pager');
        var gritab;
        var col_order = [0, 1, 2];
        var col_names = ['ID', 'Код', 'Название'];
        var col_model = [
		{ name: 'id', index: 'color_id', hidden: true, width: 50, editable: false, fixed: true },
		{ name: 'color_code', index: 'color_code', hidden: false, width: 60, editable: true, editoptions: { maxlength: "6"} },
		{ name: 'color_name', index: 'color_name', hidden: false, width: 260, editable: true, editoptions: { maxlength: "50"} }
    ];
        var jqgo = {
            url: 'callbacks.aspx',
            editurl: 'callbacks.aspx',
            datatype: 'json',
            postData: { source: 'ColorDictionary' },
            emptyrecords: true,
            autowidth: false,
            //		    scrollOffset: 22,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 40,
            multiboxonly: true,
            mtype: 'POST',
            shrinkToFit: true,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 5,
            rowList: [5, 10, 20],
            //		    viewrecords: true,
            loadui: 'disable',
            toolbar: [false, 'top'],
            filterbar: false,
            height: 110,
            //		    width: 350,
            sortname: 'color_code',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function () {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                if (!$.isPlainObject(data)) {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                }
                if ($.browser.msie || $.browser.webkit) {
                    //                $('#'+vdiv+' tr.jqgrow td').css({'line-height':'16px'});
                    $('#' + vdiv + ' tr.jqgrow td').height(21);
                }
            },
            ondblClickRow: function (id) {
                $('#' + vdiv).jqGrid('editGridRow', id,
                {
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index,
                    closeOnEscape: true,
                    editData: { source: 'ColorDictionary' },
                    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
                    afterSubmit: responseOnSubmit,
                    viewPagerButtons: false,
                    closeAfterEdit: true
                }
                );
            }
        };
        // Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

        // Индикация ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
                if (rsp.errcode == '999') {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                    document.location = 'Default.aspx';
                }
            }
            return [success, msg];
        }

        // Навигатор - обновить
        gritab.jqGrid('navGrid', '#' + vdiv + 'Pager',
        // Параметры инструментов
    {
    add: true, del: true, edit: true, search: false,
    afterRefresh: function () { gritab.resetSelection(); }
},
        // Параметры редактирования
    {
    modal: true,
    jqModal: true,
    zIndex: app.jqgrid_form_min_z_index,
    //        savekey: [true, 13],
    closeOnEscape: true,
    editData: { source: 'ColorDictionary' },
    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
    afterSubmit: responseOnSubmit,
    viewPagerButtons: false,
    closeAfterEdit: true
},
        // Параметры добавления
    {
    modal: true,
    jqModal: true,
    zIndex: app.jqgrid_form_min_z_index,
    //        savekey: [true, 13],
    closeOnEscape: true,
    editData: { source: 'ColorDictionary' },
    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
    afterSubmit: responseOnSubmit
},
        // Параметры удаления
    {
    modal: true,
    jqModal: true,
    zIndex: app.jqgrid_form_min_z_index,
    closeOnEscape: true,
    delData: { source: 'ColorDictionary' },
    afterShowForm: function () { $('div#delmod' + vdiv).shadow(); },
    afterSubmit: responseOnSubmit
}

);

        /*
        // Пользовательский навигатор - вкл/выкл. тулбар фильтра
        gritab.jqGrid('navButtonAdd', '#' + vdiv + 'Pager', {
        caption: '',
        title: 'Включить тулбар фильтра',
        buttonicon: 'ui-icon-search',
        onClickButton: function () {
        gritab.setGridParam({ filterbar: !gritab.getGridParam('filterbar') });
        gritab[0].toggleToolbar();
        }
        });
        */

        gritab.filterToolbar({ searchOnEnter: false, afterSearch: function () { } });

        return gritab;
    };  // End of create function definition


    app.ShowColorDictionary = function (dlgID) {
        var TabObj;
        var aldlg = $('#' + dlgID);
        var TabID = dlgID + 'Tab';

        if ($('#' + TabID).length) return;

        aldlg.html('<table id="' + TabID + '"></table><div id="' + TabID + 'Pager"></div>');

        TabObj = GetColorDictionary(TabID);

        aldlg.dialog(
        {
            modal: false, title: 'Справочник цветов',
            height: 'auto',
            width: 'auto',
            autoOpen: false,
            resizable: false,
            zIndex: app.ui_dialog_min_z_index,
            open: function () { $('div[aria-labelledby="ui-dialog-title-' + dlgID + '"]').shadow() },
            close: function () {
                aldlg.dialog("destroy");
                if (TabObj) TabObj.GridDestroy(TabID);
                $.ui.dialog.maxZ = $.maxZIndex({ group: '.ui-dialog.ui-widget' });  // z-index hack
            }
        }
    );

        aldlg.dialog('open');
    }


    //
    // Справочник производителей
    //
    function GetVendorDictionary(vdiv) {
        var pager = $('#' + vdiv + 'Pager');
        var gritab;
        var col_order = [0, 1];
        var col_names = ['ID', 'Название'];
        var col_model = [
		{ name: 'id', index: 'vend_id', hidden: true, width: 50, editable: false, fixed: true },
		{ name: 'vend_name', index: 'vend_name', hidden: false, width: 300, editable: true, editoptions: { maxlength: "50"} }
    ];
        var jqgo = {
            url: 'callbacks.aspx',
            editurl: 'callbacks.aspx',
            datatype: 'json',
            postData: { source: 'VendorDictionary' },
            emptyrecords: true,
            autowidth: false,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 40,
            multiboxonly: true,
            mtype: 'POST',
            shrinkToFit: true,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 5,
            rowList: [5, 10, 20],
            loadui: 'disable',
            toolbar: [false, 'top'],
            filterbar: false,
            height: 110,
            //		    width: 350,
            sortname: 'vend_name',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function () {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                if (!$.isPlainObject(data)) {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                }
                if ($.browser.msie || $.browser.webkit) {
                    //                $('#'+vdiv+' tr.jqgrow td').css({'line-height':'16px'});
                    $('#' + vdiv + ' tr.jqgrow td').height(21);
                }
            },
            ondblClickRow: function (id) {
                $('#' + vdiv).jqGrid('editGridRow', id,
                {
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index,
                    closeOnEscape: true,
                    editData: { source: 'VendorDictionary' },
                    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
                    afterSubmit: responseOnSubmit,
                    viewPagerButtons: false,
                    closeAfterEdit: true
                }
                );
            }
        };
        // Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

        // Индикация ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
                if (rsp.errcode == '999') {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                    document.location = 'Default.aspx';
                }
            }
            return [success, msg];
        }

        // Навигатор - обновить
        gritab.jqGrid('navGrid', '#' + vdiv + 'Pager',
        // Параметры инструментов
    {
    add: true, del: true, edit: true, search: false,
    afterRefresh: function () { gritab.resetSelection(); }
},
        // Параметры редактирования
    {
    modal: true,
    jqModal: true,
    zIndex: app.jqgrid_form_min_z_index,
    //    savekey: [true, 13],
    closeOnEscape: true,
    editData: { source: 'VendorDictionary' },
    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
    afterSubmit: responseOnSubmit,
    viewPagerButtons: false,
    closeAfterEdit: true
},
        // Параметры добавления
    {
    modal: true,
    jqModal: true,
    zIndex: app.jqgrid_form_min_z_index,
    //    savekey: [true, 13],
    closeOnEscape: true,
    editData: { source: 'VendorDictionary' },
    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
    afterSubmit: responseOnSubmit
},
        // Параметры удаления
    {
    modal: true,
    jqModal: true,
    zIndex: app.jqgrid_form_min_z_index,
    width: 'auto',
    closeOnEscape: true,
    delData: { source: 'VendorDictionary' },
    afterShowForm: function () {
        $('div#delmod' + vdiv).shadow();
        $('#DelTbl_' + vdiv + ' tr:eq(2) td').html(
            '<p style="font-weight:700; text-align:center;">ВНИМАНИЕ !!!</p>' +
            'Удаление записи(сей) в этой таблице повлечет за собой<br/>' +
            'удаление соответствующих записей в таблицах:<br/>' +
            '"Справочник моделей","Каталог автомобилей","Архив цен".' +
            '<p style="text-align:center;">Выполнить удаление ?</p>'
        );
    },
    afterSubmit: responseOnSubmit
}

);
        /*
        // Пользовательский навигатор - вкл/выкл. тулбар фильтра
        gritab.jqGrid('navButtonAdd', '#' + vdiv + 'Pager', {
        caption: '',
        title: 'Включить тулбар фильтра',
        buttonicon: 'ui-icon-search',
        onClickButton: function () {
        gritab.setGridParam({ filterbar: !gritab.getGridParam('filterbar') });
        gritab[0].toggleToolbar();
        }
        });
        */
        gritab.filterToolbar({ searchOnEnter: false, afterSearch: function () { } });

        return gritab;
    };  // End of create function definition


    app.ShowVendorDictionary = function (dlgID) {
        var TabObj;
        var aldlg = $('#' + dlgID);
        var TabID = dlgID + 'Tab';

        if ($('#' + TabID).length) return;

        aldlg.html('<table id="' + TabID + '"></table><div id="' + TabID + 'Pager"></div>');

        TabObj = GetVendorDictionary(TabID);

        aldlg.dialog(
        {
            modal: false, title: 'Справочник марок',
            height: 'auto',
            width: 'auto',
            autoOpen: false,
            resizable: false,
            zIndex: app.ui_dialog_min_z_index,
            open: function () { $('div[aria-labelledby="ui-dialog-title-' + dlgID + '"]').shadow() },
            close: function () {
                aldlg.dialog("destroy");
                if (TabObj) TabObj.GridDestroy(TabID);
                $.ui.dialog.maxZ = $.maxZIndex({ group: '.ui-dialog.ui-widget' });  // z-index hack
            }
        }
    );

        aldlg.dialog('open');
    }


    //
    // Справочник моделей
    //
    function GetModelDictionary(vdiv) {
        var el_vend_id;
        var pager = $('#' + vdiv + 'Pager');
        var gritab;
        var col_order = [0, 1, 2];
        var col_names = ['ID', 'Марка', 'Модель'];
        var col_model = [
		{ name: 'id', index: 'model_id', hidden: true, width: 50, editable: false, fixed: true },
		{ name: 'vend_id', index: 'vend_id', hidden: true, width: 150, editable: true, editoptions: { maxlength: "50" },
		    searchoptions: { searchhidden: true, dataInit: function (el) { el_vend_id = el; } }
		},
		{ name: 'model_name', index: 'model_name', hidden: false, width: 300, editable: true, editoptions: { maxlength: "50"} }
    ];
        var jqgo = {
            url: 'callbacks.aspx',
            editurl: 'callbacks.aspx',
            datatype: 'json',
            postData: { source: 'ModelDictionary', vend_id: '' },
            emptyrecords: true,
            autowidth: false,
            //		    scrollOffset: 22,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 40,
            multiboxonly: true,
            mtype: 'POST',
            shrinkToFit: true,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 5,
            rowList: [5, 10, 20],
            //		    viewrecords: true,
            loadui: 'disable',
            toolbar: [true, 'top'],
            filterbar: false,
            height: 110,
            //		    width: 350,
            sortname: 'model_name',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function () {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                if (!$.isPlainObject(data)) {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                }
                if ($.browser.msie || $.browser.webkit) {
                    //                $('#'+vdiv+' tr.jqgrow td').css({'line-height':'16px'});
                    $('#' + vdiv + ' tr.jqgrow td').height(21);
                }
            },
            ondblClickRow: function (id) {
                $('#' + vdiv).jqGrid('editGridRow', id,
                {
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index,
                    closeOnEscape: true,
                    editData: { source: 'ModelDictionary' },
                    afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
                    afterSubmit: responseOnSubmit,
                    viewPagerButtons: false,
                    closeAfterEdit: true
                }
                );
            }
        };
        // Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

        // Индикация ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
                if (rsp.errcode == '999') {
                    alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                    document.location = 'Default.aspx';
                }
            }
            return [success, msg];
        }

        // Навигатор - обновить
        gritab.jqGrid('navGrid', '#' + vdiv + 'Pager',
        // Параметры инструментов
    {
    add: true, del: true, edit: true, search: false, refresh: false,
    afterRefresh: function () { gritab.resetSelection(); }
},
        // Параметры редактирования
{
modal: true,
jqModal: true,
zIndex: app.jqgrid_form_min_z_index,
//    savekey: [true, 13],
closeOnEscape: true,
editData: { source: 'ModelDictionary', vend_id: function () { return $(el_vend_id).val(); } },
afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
afterSubmit: responseOnSubmit,
viewPagerButtons: false,
closeAfterEdit: true
},
        // Параметры добавления
{
modal: true,
jqModal: true,
zIndex: app.jqgrid_form_min_z_index,
//    savekey: [true, 13],
closeOnEscape: true,
editData: { source: 'ModelDictionary', vend_id: function () { return $(el_vend_id).val(); } },
afterShowForm: function () { $('div#editmod' + vdiv).shadow() },
afterSubmit: responseOnSubmit
},
        // Параметры удаления
{
modal: true,
jqModal: true,
zIndex: app.jqgrid_form_min_z_index,
width: 'auto',
closeOnEscape: true,
delData: { source: 'ModelDictionary', vend_id: function () { return $(el_vend_id).val(); } },
afterShowForm: function () {
    $('div#delmod' + vdiv).shadow();
    $('#DelTbl_' + vdiv + ' tr:eq(2) td').html(
            '<p style="font-weight:700; text-align:center;">ВНИМАНИЕ !!!</p>' +
            'Удаление записи(сей) в этой таблице повлечет за собой<br/>' +
            'удаление соответствующих записей в таблицах:<br/>' +
            '"Каталог автомобилей" и "Архив цен".' +
            '<p style="text-align:center;">Выполнить удаление ?</p>'
        );
},
afterSubmit: responseOnSubmit
}

);
        /*
        // Пользовательский навигатор - вкл/выкл. тулбар фильтра
        gritab.jqGrid('navButtonAdd', '#' + vdiv + 'Pager', {
        caption: '',
        title: 'Включить тулбар фильтра',
        buttonicon: 'ui-icon-search',
        onClickButton: function () {
        gritab.setGridParam({ filterbar: !gritab.getGridParam('filterbar') });
        gritab[0].toggleToolbar();
        }
        });
        */
        gritab.filterToolbar({ searchOnEnter: false, afterSearch: function () { } });


        // ToolBar - АвтоЗаполнение марки
        var tgritab = $("#t_" + vdiv);
        var vendSel = vdiv + "_vendSel";

        tgritab.css({ 'padding': '2px' });

        tgritab.append('<label for="' + vendSel + '">Марка:</label><input id="' + vendSel + '" style="width:80px">' +
                '<span style="margin-left:10px; font-weight:bold" id="' + vendSel + '_Text"></span>');
        $("#" + vendSel).autocomplete({
            //    source: [{ label: "Рено", value: 2 }, { label: "Опель", value: 10 }, { label: "Хюндай", value: 12 }, { label: "Хонда", value: 4 }, { label: "Фиат", value: 7}],
            source: function (request, responce) {
                $.post('callbacks.aspx',
            { source: 'VendorDictionary', oper: 'find', term: request.term },
            function (rsp, textStatus) {
                if (rsp.errcode) {
                    if (rsp.errcode == '999') {
                        alert("Ваша сессия закончилась по таймауту.\nПожалуйста перерегистрируйтесь.");
                        location.href = 'Default.aspx';
                    }
                    else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'ipdepo-icon-stop32');
                    responce();
                    return;
                }
                if (rsp.data) {
                    responce($.map(rsp.data, function (item) {
                        return { label: item.name, value: item.value }
                    }));
                    return;
                }
                responce();
            }, 'json');
            },
            minLength: 2,
            autoFocus: true,
            focus: function (event, ui) {
                $("#" + vendSel).val(ui.item.label);
                return false;
            },
            select: function (event, ui) {
                $("#" + vendSel).val(ui.item.label);
                $("#" + vendSel + "_Text").text('Модели от: "' + ui.item.label + '"');
                $(el_vend_id).val(ui.item.value);
                gritab[0].triggerToolbar();
                return false;
            }
        });

        return gritab;
    };  // End of create function definition


    app.ShowModelDictionary = function (dlgID) {
        var TabObj;
        var aldlg = $('#' + dlgID);
        var TabID = dlgID + 'Tab';

        if ($('#' + TabID).length) return;

        aldlg.html('<table id="' + TabID + '"></table><div id="' + TabID + 'Pager"></div>');

        TabObj = GetModelDictionary(TabID);

        aldlg.dialog(
        {
            modal: false, title: 'Справочник моделей',
            height: 'auto',
            width: 'auto',
            autoOpen: false,
            resizable: false,
            zIndex: app.ui_dialog_min_z_index,
            open: function () { $('div[aria-labelledby="ui-dialog-title-' + dlgID + '"]').shadow() },
            close: function () {
                aldlg.dialog("destroy");
                if (TabObj) TabObj.GridDestroy(TabID);
                $.ui.dialog.maxZ = $.maxZIndex({ group: '.ui-dialog.ui-widget' });  // z-index hack
            }
        }
    );

        aldlg.dialog('open');
    }

    // ---------------------------------------------------------------------------
})(jQuery);
